Welcome to pandas!

7 数据汇总技术

数据聚合处理是任何数据分析工具中都有的功能,在Excel中有提供合并计算、分类汇总、数据透视表的功能,以及使用Excel工作表的统计函数来完成,本节主要学习Pandas中的分组与数据透视两个功能。

7.1 分组原理及处理

分组是将数据按某种特定的方式进行拆分,再对拆分出来的每组数据处理,可以做聚合、转换、过江等用户希望的操作,可以对Series和DateFrame这两种数据分组,操作方式也类基本类似,这里就以讲解DateFrame为例,对应的是df.groupby()函数,结构如下:

df.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,observe=False,dropna=True)

by:分组依据,数据形式可以是映射、函数、标签或者标签列表

axis:分组方向,0或index表示在行方向分组,1 或columns表示在列方向分组,默认为0

level:如果DateFrame表是分层索引,则按一个或多个特定层级分组

as_index:对于聚合输出,返回以组标签,作为索引的对象,仅与DateFrame输入相关。因为_index=False 实际上是SQL风格的分组输出

sort:对组键排序,关闭此选项可获得更好的性能。注意,这并不影响各组内观察的顺序,Groupby保留每个组中行的顺序

group_keys:调用apply时,将组键添加到索引以标识片段

observed:布尔型,只适用于任何分类分组,如果为True,则只会显示分组的观测值

dropna:如果为True,并且组健包含NA值,则将删除NA值以及行/列,如果为False,则NA值也将视为组中的键

上面的分组可以在行或列的方向完成,但在行方向的分组比较常见,所以后续所做演示基本是关于行方向的分组。


import pandas as pd

df=pd.read_excel(r" D:\Pyobject2023\object\测试\素材\1.7.01 分组原理及处理.xlsx" )

print (df)

for data in df.groupby(by= "部门" ):

print (data)

print ("------------------------------------------")

返回:

公司 部门 姓名 工资
0 A公司 销售部 张三 8567
1 A公司 销售部 李四 8564
2 A公司 财务部 许麻子 4563
3 B公司 开发部 郭麻子 3623
4 B公司 销售部 杨流子 5890
5 B公司 开发部 小曾 3264

('开发部', 公司 部门 姓名 工资
3 B公司 开发部 郭麻子 3623
5 B公司 开发部 小曾 3264)

------------------------------------------


('财务部', 公司 部门 姓名 工资
2 A公司 财务部 许麻子 4563)

------------------------------------------


('销售部', 公司 部门 姓名 工资
0 A公司 销售部 张三 8567
1 A公司 销售部 李四 8564
4 B公司 销售部 杨流子 5890)

------------------------------------------


import pandas as pd

df=pd.read_excel(r"D:\Pyobject2023\object\测试\素材\1.7.01 分组原理及处理.xlsx")

for data in df.groupby(by="公司"):

print (data)

print ("------------------------------------------")

返回:

('A公司', 公司 部门 姓名 工资
0 A公司 销售部 张三 8567
1 A公司 销售部 李四 8564
2 A公司 财务部 许麻子 4563)

------------------------------------------


('B公司', 公司 部门 姓名 工资
3 B公司 开发部 郭麻子 3623
4 B公司 销售部 杨流子 5890
5 B公司 开发部 小曾 3264)

------------------------------------------